L’exécution locale de modèles d’IA open source sur nos propres ordinateurs nous offre une certaine confidentialité, des possibilités infinies de bricolage et une liberté vis-à-vis des grandes entreprises. C'est presque une question de liberté d'expression.
Cependant, pour nous, pauvres en GPU, avoir notre propre ordinateur IA semble être un rêve coûteux.
Et si je vous disais que vous pouvez obtenir un ordinateur IA utile pour 300 $ ? Intéressé? Vous devez fournir votre propre moniteur, clavier et souris. Et vous avez besoin d'un peu de bricolage sur le système d'exploitation Linux, les pilotes, les middlewares et les configurations.
Pour clarifier, nous ne parlons PAS de « formation » ou de « réglage fin » de grands modèles d’IA générative. Nous nous concentrerons sur la façon d'exécuter un LLM open source (grands modèles de langage tels que
Maintenant, continuons.
Supposons que l'un des principaux cas d'utilisation d'un ordinateur IA domestique soit en cours d'exécution
Cependant, vous avez besoin des éléments suivants pour une vitesse d'inférence plus rapide. Sinon, vous aurez l'impression de regarder les cheveux pousser sur votre paume pendant que le LLM crache un jeton à la fois.
Pour la génération d’images avec Stable Diffusion, vous avez besoin de la puissance du GPU. Cependant, vous n’avez pas besoin d’un GPU très sophistiqué pour cela. Vous pouvez exploiter le GPU intégré déjà dans vos ordinateurs personnels :
Tous les Mac équipés d'un processeur M1/M2/M3, qui intègre un processeur, un GPU et une mémoire haute vitesse (ils sont vraiment bons, mais en raison de leur prix, ils sont exclus de cet article particulier)
AMD APU (par exemple Ryzen 7 5700U), qui intègre CPU et GPU pour les mini-PC économiques. Ce sera l’objet de cet article.
CPU Intel (par exemple, Core i5-1135G7), qui intègre également CPU et GPU. Ils sont légèrement supérieurs au budget de 300 $ pour l'ensemble du mini-PC, mais les lecteurs sont invités à les explorer davantage par eux-mêmes.
Un mini PC basé sur AMD avec les spécifications suivantes se vend généralement à moins de 300 $. Je ne souhaite soutenir aucune marque en particulier, vous pouvez donc rechercher vous-même :
J'ai fait un peu de folie et j'ai opté pour le modèle à 400 $ avec 32 Go de RAM et 1 To de SSD (toutes choses étant égales par ailleurs). La raison principale est que je fais des recherches sur les LLM open source et que j'aimerais exécuter des modèles plus gros, en plus d'exécuter Stable Difusion. Mais vous devriez pouvoir faire presque tout ce qui est décrit dans cet article avec l'ordinateur à 300 $.
Pour les APU AMD comme le
Vous devez modifier cela en fonction de votre cas d'utilisation principal :
Si vous avez uniquement besoin d'exécuter l'inférence LLM, vous pouvez ignorer toute cette étape de préparation. Étant donné que l'inférence LLM n'aura besoin d'utiliser que le processeur, vous devez économiser la plus grande partie de la RAM pour le processeur afin de pouvoir exécuter des modèles LLM plus grands.
Si tu as besoin de courir
Dans mon cas, je souhaite exécuter à la fois l’inférence Stable Diffusion XL et LLM sur le même mini PC. Par conséquent, je voudrais allouer 16 Go (sur 32 Go au total) au GPU.
Vous pouvez y parvenir en modifiant les paramètres dans le BIOS. En règle générale, il existe une limite supérieure et le paramètre par défaut peut être bien inférieur à la limite supérieure. Sur mon ordinateur, la limite supérieure était de 16 Go, soit la moitié de la RAM totale disponible.
Si le BIOS de votre ordinateur prend en charge de tels paramètres, continuez et modifiez le numéro souhaité. Mon BIOS ne dispose pas d'un tel paramètre.
Si votre BIOS ne dispose pas de ce paramètre, veuillez suivre les instructions « Déverrouiller l'allocation de mémoire GPU sur l'APU AMD Ryzen™ ? » par Winston Ma. Je l'ai essayé et cela a bien fonctionné, donc maintenant j'ai 16 Go de VRAM.
AMD
Afin d'installer et de faire fonctionner le ROCm d'AMD, vous devez vous assurer que les versions du matériel GPU, de la distribution Linux, du noyau, de python, du pilote HIP, de la bibliothèque ROCm et de pytorch sont compatibles. Si vous voulez le moins de douleur et un maximum de chances de succès du premier coup, respectez les combinaisons recommandées et vérifiées.
Veuillez consulter le lien suivant pour obtenir les versions compatibles du système d'exploitation Linux et du noyau, et installez-les. Au départ, j'ai commis l'erreur d'installer simplement mon système d'exploitation Linux préféré et mon noyau Linux par défaut, et c'était très pénible de revenir en arrière pour résoudre les problèmes de compatibilité. Vous pouvez éviter cette douleur en utilisant simplement les combinaisons officiellement prises en charge.
Si l'ensemble de l'installation se termine bien, vous pouvez taper rocminfo
, et quelque chose comme ceci s'affichera (je n'ai coupé que les parties les plus pertinentes en surbrillance jaune) :
ROCk module is loaded
=====================
HSA System Attributes
=====================
Runtime Version: 1.1
System Timestamp Freq.: 1000.000000MHz
Sig. Max Wait Duration: 18446744073709551615 (0xFFFFFFFFFFFFFFFF) (timestamp count)
Machine Model: LARGE
System Endianness: LITTLE
Mwaitx: DISABLED
DMAbuf Support: YES
==========
HSA Agents
==========
*******
Agent 1
*******
Name: AMD Ryzen 7 5800H with Radeon Graphics
Uuid: CPU-XX
Marketing Name: AMD Ryzen 7 5800H with Radeon Graphics
Vendor Name: CPU
Pool Info:
Pool 1
Segment: GLOBAL; FLAGS: COARSE GRAINED
Size: 16777216(0x1000000) KB
La dépendance à Python peut être assez délicate, c'est donc une bonne pratique de configurer un environnement approprié. Vous pouvez utiliser soit
source venv/bin/activate
conda activate llm
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.7
Ce qui suit est spécifique aux APU avec graphiques intégrés. Même s'ils ne sont pas officiellement pris en charge par le ROCm, les éléments suivants se sont avérés efficaces.
export HSA_OVERRIDE_GFX_VERSION=9.0.0
Maintenant, après toutes les étapes compliquées, testons si ROCm fonctionne avec Torch. Et vous pouvez voir que ROCm « fait semblant » d'être CUDA pour les besoins de Pytorch.
python3 -c 'import torch' 2> /dev/null && echo 'Success' || echo 'Failure'
Success
python3 -c 'import torch; print(torch.cuda.is_available())'
True
Commençons par quelque chose de simple pour notre ordinateur IA à 300 $ nouvellement configuré : exécuter localement un grand modèle de langage. Nous pouvons choisir l’un des modes open source les plus populaires :
De plus, vous pouvez également essayer de petits LLM de
Nous utiliserons
Tout d’abord, vous devez installer wget
et git
. Et puis suivez les étapes pour compiler et installer llama.cpp.
sudo apt-get install build-essential
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make
Afin d'exécuter les LLM sur notre machine peu coûteuse au lieu de serveurs cloud dotés de GPU coûteux, nous devons utiliser une version « compressée » des modèles afin qu'ils puissent s'insérer dans l'espace RAM. Pour un exemple simple, un modèle LLaMA-2 7B a 7B paramètres, chacun représenté par float16 (2 octets).
De plus, le format du fichier doit être
Tout d’abord, nous l’avons testé sur le mini PC AMD et nous avons atteint environ 10 jetons par seconde. C'est en fait assez correct et vous pouvez discuter avec le LLM sans trop attendre.
Configuration du système :
Instruction de ligne de commande :
./main -m models/llama-2-7b-chat.Q4_0.gguf --color -ins -n 512 --mlock
llama_print_timings: load time = 661.10 ms
llama_print_timings: sample time = 234.73 ms / 500 runs ( 0.47 ms per token, 2130.14 tokens per second)
llama_print_timings: prompt eval time = 1307.11 ms / 32 tokens ( 40.85 ms per token, 24.48 tokens per second)
llama_print_timings: eval time = 50090.22 ms / 501 runs ( 99.98 ms per token, 10.00 tokens per second)
llama_print_timings: total time = 64114.27 ms
Ensuite, nous avons testé sur un mini PC Intel et nous avons obtenu environ 1,5 jeton par seconde. C'est un peu trop lent pour une session de discussion fructueuse. Ce n'est pas une comparaison juste, puisque l'Intel N5105 est nettement plus faible que l'AMD 5800H. Mais c'est le seul mini PC Intel en ma possession. Si vous utilisez un processeur Intel plus puissant (par exemple, Core i5-1135G7), vous devriez obtenir des résultats comparables. Veuillez rapporter vos conclusions dans les commentaires ci-dessous.
Configuration du système :
./main -m models/llama-2-7b-chat.Q4_0.gguf -ins --color -n 512 --mlock
llama_print_timings: load time = 14490.05 ms
llama_print_timings: sample time = 171.53 ms / 97 runs ( 1.77 ms per token, 565.49 tokens per second)
llama_print_timings: prompt eval time = 21234.29 ms / 33 tokens ( 643.46 ms per token, 1.55 tokens per second)
llama_print_timings: eval time = 75754.03 ms / 98 runs ( 773.00 ms per token, 1.29 tokens per second)
Et faites également attention à cette page, en ce qui concerne AMD ROCm
export HSA_OVERRIDE_GFX_VERSION=9.0.0
source venv/bin/activate
./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half
./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half
Essai 1
SDXL (résolution maximale 1024x1024) recommande au moins 12 Go de VRAM, vous devez donc absolument effectuer l'étape de préparation 1 pour allouer 16 Go de VRAM à l'iGPU. Cette tâche n’est donc possible qu’avec le mini PC à 400 $.
./webui.sh --upcast-sampling
Essai 1 :
Essai 2 :
Bien que cet article se concentre sur les systèmes d’exploitation Linux, vous pouvez également faire fonctionner Stable Diffusion sous Windows. Voici mes expériences :
Essai 1 :
Alors, est-ce que vous vous amusez à exécuter vos propres modèles d'IA générative sur votre nouveau mini PC à 300 $ ? J'espère que tu vas le faire.
Les modèles d'IA open source fonctionnant sur des appareils personnels sont l'un des domaines les plus intéressants pour les bricoleurs, car aucun d'entre nous ne disposera de l'énorme pool de GPU nécessaire pour réellement former un modèle de base. Cela permettra une nouvelle génération d’applications à la fois super intelligentes tout en préservant la confidentialité de nos données.
Et ensuite ?
Et bon bricolage avec l'IA, l'open source et sur l'appareil !